const baseURL = "https://pcapi-xiaotuxian-front-devtest.itheima.net";
import store from "@/store";
/* 
需要拦截的api名称，如：uni.addInterceptor('request', OBJECT) ，将拦截 uni.request()
invoke	拦截前触发	
success	成功回调拦截	
fail	失败回调拦截	
complete	完成回调拦截
*/
const request = {
  invoke(args) {
    uni.showLoading({ title: "加载中" });
    // args请求的全部配置，args.url 请求的路径
    // 检测你的请求路径，是不是以http开头，不是的话，我就帮你补全
    // 例如请求url为 /api/getList,那么就会补全为
    // https://pcapi-xiaotuxian-front-devtest.itheima.net/api/getList
    if (!args.url.startsWith("http")) {
      args.url = baseURL + args.url;
    }
    // 添加请求头
    args.header = {
      ...args.header, // 保留原本的 header
      "source-client": "miniapp", // 添加小程序端调用标识
      Authorization: store.state.user.profile?.token,
    };
  },
  complete(res) {
    uni.hideLoading();
  },
};
uni.addInterceptor("request", request);
uni.addInterceptor("uploadFile", request);

export default (options) => {
  return new Promise((resolve, reject) => {
    uni.request({
      ...options,
      success(res) {
        // 如果返回的状态码是 401，代表没登录，跳转登录页
        if (res.statusCode === 401) {
          uni.navigateTo({ url: "/pages/login/index" });
        }
        if (res.statusCode >= 200 && res.statusCode < 300) {
          resolve(res.data);
        } else {
          reject(res);
        }
      },
      fail(err) {
        reject(err);
      },
    });
  });
};
